// pages/index/detailsSC/index.js
import Dialog from '../../../../miniprogram_npm/@vant/weapp/dialog/dialog';
import Toast from '../../../../miniprogram_npm/@vant/weapp/toast/toast';
import {
	clearAlertRefresh
} from '../../../../utils/hooks';

const $api = require('../../../../request/api').API;
const app = getApp();
Page({
	/**
	 * 页面的初始数据
	 */
	data: {
		flowEndDate: '',
		activeDate: '',
		id: '',
		// 住户id
		houseId: '',
		// 呼叫器id
		beeperId: '',
		// 设备id
		equipId: '',
		equipMac: '',
		//--------------------------------------------------------------
		wifiName: '',
		wifiPwd: '',
		linkName: '',
		phone: '',
		address: '',
		provinceName: '',
		cityName: '',
		areaName: '',
		streetName: '',
		villageName: '',
		callingName: '',
		callingStatus: 0,
		callingErrorStatus: 0,
		equipNickName: '',
		installArea: '',
		equipCode: '',
		money: 0,
		// 标签列表
		tagList: [{
			beeperTagId: '1',
			tagName: '帅气'
		}],
		createDate: '',
		//-----------------------------------------------------------------
		// 设置wifi弹框
		showWifiOverlay: false,
		// 设置新增标签弹框
		showTagOverlay: false,
		// 点击标签分类显示
		selectClassShow: false,
		selectClassName: '点击选择分类',
		selectClassId: '',
		tagClass: [],
		// 是否为主用户
		mainFlag: 0,
		// 修改昵称或者安装区域弹框
		showUpdateData: false,
		showType: 1, //1代表昵称修改 2代表安装区域修改
		tempData: '', //临时数据，用来修改昵称和安装区域
		useId: '', // 使用人的d
		userName: '', // 使用人的名称
		actualUserId: '',
		showModifyUser: false,
		userList: [],
		localeId: '',
		markers: [{
			id: 1,
			longitude: 0,
			latitude: 0,
			width: 26,
			height: 30,
		}],
		markersInfo: {
			address: '',
			areaName: '',
			cityName: '',
			createDate: '',
		},
		siteRate:'',
		frequencyActions: [{
				name: '2分钟',
				value: 120
			},
			{
				name: '5分钟',
				value: 300
			},
			{
				name: '15分钟',
				value: 900
			},
			{
				name: '30分钟',
				value: 1800
			},
			{
				name: '1小时',
				value: 3600
			},
			{
				name: '2小时',
				value: 7200
			},
			{
				name: '3小时',
				value: 10800
			},
			{
				name: '5小时',
				value: 18000
			}
		],
		frequencyShow: false,
	},

	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad(options) {
		let id = options.beeperId;
		if (id != undefined) {
			this.setData({
				id: id,
				localeId: options.localeId
			});
		}
	},

	// 请求数据
	getData(id) {
		let params = {
			id: this.data.id
		};
		let {
			userList
		} = this.data;
		$api
			.getBeeperSC(params)
			.then(res => {
				if (res.data.status == 0) {
					var data = res.data.data;
					this.setData({
						houseId: data.houseId,
						beeperId: data.beeperId,
						createDate: data.createDate,
						activeDate: data.activeDate,
						equipId: data.equipId,
						siteRate:data.siteRate,
						linkName: data.linkName,
						phone: data.phone,
						address: data.address == '待补充' ? '' : data.address,
						provinceName: data.provinceName,
						cityName: data.cityName,
						areaName: data.areaName,
						streetName: data.streetName,
						villageName: data.villageName,
						callingName: data.equipName,
						callingStatus: data.equipState,
						callingErrorStatus: data.errorState,
						money: data.balance,
						tagList: data.tags,
						mainFlag: data.mainFlag,
						equipNickName: data.equipNickName,
						installArea: data.installArea,
						equipCode: data.equipCode,
						equipMac: data.equipMac,
						flowEndDate: data.flowEndDate == null ? '' : data.flowEndDate,
						actualUserId: data.actualUserId,
						userName: userList.find(item => item.id == data.actualUserId)?.name
					});
					this.getLocationData()
					if (this.data.address == '') {
						this.setData({
							showWifiOverlay: true
						});
					}
				}
			})
			.catch(err => {
				console.log(err);
			});
	},
	// 打开wifi设置弹框
	openSetWifi() {
		this.setData({
			showWifiOverlay: true,
			linkName: this.data.contact,
			phone: this.data.phone
		});
	},
	// 关闭wifi设置弹框
	closeSetWifi() {
		if (this.data.address == '') {
			// 不填信息退出，直接解绑并回到首页
			this.jiebang();
			setTimeout(() => {
				wx.switchTab({
					url: '/pages/equipment/index'
				});
			}, 500);
		} else {
			this.setData({
				showWifiOverlay: false
			});
		}
	},

	onSelectClass(event) {
		console.log(event.detail);
		this.setData({
			selectClassName: event.detail.name,
			selectClassId: event.detail.id
		});
	},

	isAlarmChange() {
		Dialog.confirm({
				title: '提示',
				showCancelButton: true,
				cancelButtonText: '取消',
				confirmButtonText: '确定',
				closeOnClickOverlay: true,
				message: '是否测试报警？'
			})
			.then(() => {
				$api.testAlarm({
					equipId: this.data.equipId
				}).then(res => {
					if (res.data.status == 0) {
						Toast.success("操作成功")
					} else {
						Toast.fail("操作失败")
					}
				}).catch(() => {
					Toast.fail("操作失败")
				})
			})
			.catch(() => {

			});
	},

	// 设置wifi
	setWIFI() {
		let params = {
			houseId: this.data.houseId,
			linkName: this.data.linkName,
			phone: this.data.phone,
			address: this.data.address,
			beeperId: this.data.beeperId
		};
		if (params.linkName == '') {
			Toast.fail('联系人不能为空');
			return;
		}
		if (params.phone == '') {
			Toast.fail('联系电话不能为空');
			return;
		}
		if (params.address == '') {
			Toast.fail('门牌号不能为空');
			return;
		}
		$api
			.setHouseWifi(params)
			.then(res => {
				console.log('设置wifi回调', res);
				if (res.data.status == 0) {
					wx.showToast({
						title: '设置地址信息成功'
					});
					this.setData({
						showWifiOverlay: false
					});
					this.getData(this.data.id);
				}
			})
			.catch(err => {
				console.log(err);
			});
	},

	// 跳转用户列表
	toWarningRecord() {
		console.log('equipId', this.data.equipId);
		wx.navigateTo({
			url: '../warningRecord/index?id=' + this.data.equipId
		});
	},

	//立即定位
	openLocation() {
		const params = {
			equipId: this.data.equipId
		};
		$api.openLocation(params).then(res => {
			if (res.data.status == 0) {
				Toast.success('操作成功')
				this.getLocationData();
			} else {
				Toast.fail(res.data.msg)
			}
		}).catch(err => {
			Toast.fail(err.msg)
		});
	},

	//获取最新一条定位数据
	getLocationData() {
		const params = {
			equipId: this.data.equipId
		};
		$api.getFootprint(params).then(res => {
			if (res.data.data != null) {
				const {
					latitude,
					longitude,
					address,
					areaName,
					cityName,
					createDate
				} = res.data.data;
				this.setData({
					'markers[0].latitude': Number(latitude),
					'markers[0].longitude': Number(longitude),
					'markersInfo.address': address,
					'markersInfo.areaName': areaName,
					'markersInfo.cityName': cityName,
					'markersInfo.createDate': createDate,
				});
			}
		});
	},

	//定位频率
	frequencySet() {
		this.setData({
			frequencyShow: true
		})
	},

	frequencyClose() {
		this.setData({
			frequencyShow: false
		})
	},

	frequencySelect(event) {
		$api.setFrequency({
			equipId: this.data.equipId,
			siteRate: event.detail.value
		}).then(res => {
			if (res.data.status == 0) {
				Toast.success('操作成功')
				this.getLocationData();
				this.getData()
			} else {
				Toast.fail(res.data.msg)
			}
		}).catch(err => {
			Toast.fail(err.msg)
		})
	},

	// 解绑设备
	jiebang() {
		Dialog.confirm({
			title: '提示',
			message: '确认解绑当前设备吗？'
		}).then(() => {
			let params = {
				id: this.data.equipId
			};
			$api
				.unbindBinding(params)
				.then(res => {
					console.log('解绑设备', res);
					if (res.data.status == 0) {
						wx.showToast({
							title: '解绑成功！'
						});
						setTimeout(() => {
							wx.switchTab({
								url: '/pages/equipment/index'
							});
						}, 1000);
					}
				})
				.catch(err => {
					console.log('解绑设备', err);
				});
		});
	},
	// 解除警报
	jieAlarm() {
		Dialog.confirm({
			title: '提示',
			showCancelButton: true,
			cancelButtonText: '误触发',
			confirmButtonText: '已处理',
			closeOnClickOverlay: true,
			message: '确定解除警报吗？'
		}).then(() => {
			this.handleAlarmLiftedProcess()
		}).catch(() => {
			this.handleFalseAlarmRelease()
		});
	},
	/**
	 * 解除警报 - 已处理
	 */
	handleAlarmLiftedProcess() {
		$api
			.equipAllClear({
				equipId: this.data.equipId,
				cancelReason: 2
			})
			.then(() => {
				wx.showToast({
					title: '解除成功！'
				});
				clearAlertRefresh(this.data.id, this);
			});
	},

	/**
	 * 解除警报 - 误触
	 */
	handleFalseAlarmRelease() {
		$api
			.equipAllClear({
				equipId: this.data.equipId,
				cancelReason: 1
			})
			.then(() => {
				wx.showToast({
					title: '解除成功！'
				});
				clearAlertRefresh(this.data.id, this);
			});
	},
	// 去设置紧急联系人
	toUrgentContact() {
		wx.navigateTo({
			url: '/subcontract/equipment/pages/urgentContact/index?equipId=' + this.data.equipId
		});
	},
	// 通讯录
	toAddressBook() {
		wx.navigateTo({
			url: '/subcontract/equipment/pages/addressBook/index?equipId=' + this.data.equipId + '&equipType=1'
		});
	},
	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady() {},

	/**
	 * 生命周期函数--监听页面显示
	 */
	async onShow() {
		await this.getUserList();
		this.getData(this.data.id);
	},
	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide() {},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload() {},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh() {},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom() {},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage() {},
	// 输入框绑定值
	wifiNameInput(e) {
		let value = e.detail.value;
		this.setData({
			wifiName: value
		});
	},
	wifiPwdInput(e) {
		let value = e.detail.value;
		this.setData({
			wifiPwd: value
		});
	},
	contactInput(e) {
		let value = e.detail.value;
		this.setData({
			linkName: value
		});
	},
	phoneInput(e) {
		let value = e.detail.value;
		this.setData({
			phone: value
		});
	},
	addressInput(e) {
		let value = e.detail.value;
		this.setData({
			address: value
		});
	},
	tagNameInput(e) {
		let value = e.detail.value;
		this.setData({
			addTagName: value
		});
	},

	
	toDetail() {
		const {
			id,
			localeId
		} = this.data
		wx.navigateTo({
			url: '/subcontract/equipment/pages/detailsSC/index?beeperId=' + id + '&localeId=' + localeId
		});
	},

	// 打开修改昵称弹框
	openUpdateData(e) {
		let type = e.currentTarget.dataset.type;
		this.setData({
			showUpdateData: true,
			showType: type,
			tempData: type == 1 ? this.data.equipNickName : this.data.installArea
		});
	},
	// 关闭修改昵称弹框
	closeUpdateData() {
		this.setData({
			showUpdateData: false
		});
	},
	// 输入绑定
	dataInput(e) {
		let value = e.detail.value;
		this.setData({
			tempData: value
		});
	},
	// 修改昵称
	UpdateData() {
		if (!this.data.tempData && this.data.showType == 1) {
			Toast('请输入昵称');
			return;
		} else if (!this.data.tempData && this.data.showType == 2) {
			Toast('请输入安装区域');
			return;
		}
		let params = {
			id: this.data.equipId,
			name: this.data.tempData,
			state: this.data.showType
		};
		$api
			.UpdataName(params)
			.then(res => {
				if (res.data.status == 0) {
					if (this.data.showType == 1) {
						wx.showToast({
							title: '设置昵称成功'
						});
					} else {
						wx.showToast({
							title: '设置成功'
						});
					}

					this.setData({
						showUpdateData: false
					});
					this.getData(this.data.id);
				}
			})
			.catch(err => {
				console.log(err);
			});
	},
	// 获取产所下的用户
	async getUserList() {
		let res = await $api.listUserCustomer({
			localeId: this.data.localeId
		});
		this.setData({
			userList: res.data.data || []
		});
	},
	// 显示用户弹框
	async showModifyUserPopup() {
		this.setData({
			showModifyUser: true
		});
	},
	// 关闭用户选择弹框
	closeMoidfyUserPopup() {
		this.setData({
			showModifyUser: false
		});
	},
	// 确定使用人
	async confirmModifyUser(e) {
		const {
			id,
			name
		} = e.detail.value;
		const params = {
			deviceId: this.data.equipId,
			userId: id
		};
		await $api.updateSugarUser(params);
		Toast.success('修改成功');
		this.setData({
			showModifyUser: false,
			actualUserId: id,
			userName: name
		});
	},
	//查看足迹
	viewFootprint() {
		wx.navigateTo({
			url: '/subcontract/equipment/pages/viewFootprint/index?equipId=' + this.data.equipId,
		})
	},
});